package edu.maping.easy.painter;

import controlP5.ControlEvent;
import controlP5.ControlGroup;
import controlP5.ControlP5;
import edu.maping.easy.ControlFacade;
import edu.maping.easy.gui.ButtonList;
import edu.maping.easy.gui.GUIEvent;
import edu.maping.easy.gui.GuiFactory;
import edu.maping.easy.model.Thing;
import edu.maping.easy.model.World;
import edu.maping.easy.sequence.ActionConf;
import processing.core.PApplet;

public interface ThingPainterDelegate {

	/**
	 * 
	 * @param actionConf
	 */

	void setConf(ActionConf actionConf);

	/**
	 * 
	 * @return
	 */

	String getName();

	/**
	 * 
	 * @param theEvent
	 */
	EventPainter controlEvent(GUIEvent theEvent);

	/**
	 * 
	 * @param x
	 * @param y
	 */

	void showForm(int x, int y);

	/**
	 * 
	 */

	void hideForm();

	/**
	 * 
	 * @param pApplet
	 * @param controlFacade
	 */

	void setup(PApplet pApplet, ControlFacade controlFacade,
			ButtonList buttonList, GuiFactory guiFactory);

	/**
	 * Crea e inicializa los parametros de configuración de plugin render
	 * 
	 * @return
	 */

	ActionConf createNewActionConf();

	ThingPainterDelegate createNewInstance();
	
	void setThing(Thing thing);
	
}
